/*
 *  WaveFunctionSinXVariableCycle.h
 *  SoundController0002
 *
 *  Created by jiro on 10/11/20.
 *  Copyright 2010 jiro music. All rights reserved.
 *
 */

#pragma once

#include "WaveFunction.h"
#include "Line.h"

namespace sc { 
	
	class WaveFunctionSinXVariableCycle : public WaveFunction
	{

	friend class WaveFunctionFactory;

	private:

		const Line& line;

	public:
	
		double operator() ( double x ) const;

		double GetMaxOfY() const;

		double GetCycle() const;

		bool operator == ( const WaveFunction& rhs ) const;

		bool operator != ( const WaveFunction& rhs ) const;

		bool operator < ( const WaveFunction& rhs ) const;

		double GetCycle( double x ) const;

		double GetStartCycle() const;

		double GetEndCycle() const;

	private:

		WaveFunctionSinXVariableCycle( Line::Type cycleVaryLineType, double startCycle, double endCycle, double xAtStartCycle, double xAtEndCycle );

	};

}
